package com.bosssoft.hr.train.j2se.collection;

import com.bosssoft.hr.train.j2se.pojo.User;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @Class HashMapDemo
 * @Description 使用HashMap存储 10个 User，Map的key为用户id，Value为对象，并且迭代输出
 * 为了测试 Hashmap
 * @Author TangZaoBang
 * @Date 2023/04/26 15:38
 * @Version
 */
@Slf4j
public class HashMapDemo extends BaseCollectionDemo {

    /**
     * 基于接口定义,这样右边可以是map的任何实现类,接受数据的时候就这样
     * 可以方便地添加新的实现类，而不需要对代码进行大幅修改。
     */
    private Map<Long, User> userHashMap=new HashMap<>();



    /**
     * 对map中的用户进行遍历，阿里巴巴规范推荐使用entrySet 遍历 Map 类集合 KV，
     * @author TangZaoBang
     * @date 2023/04/26 17:32
     * @return void
     */
    public void visitByEntrySet() {
        //调用父类的数据构建方法
        User[] users=generateData();
        for(User user: users){
            userHashMap.put(user.getId(),user);
        }
        // 遍历显示 推荐使用 entrySet 遍历 Map 类集合 K V
        Set<Map.Entry<Long,User>> setUser=userHashMap.entrySet();
        if(null==setUser){
            throw new RuntimeException("不存在数据");
        }
        for(Map.Entry<Long,User> entry : setUser){
            log.info(Constraint.LOG_TAG+"Key:{}",entry.getKey().toString()+"---Value:"+entry.getValue());
        }
    }

}
